using SharpGraphT.Graph;

namespace SharpGraphT.Alg.Interfaces;

public interface IStrongConnectivityAlgorithm<TV, TE> where TE : class, new() {
    IGraph<TV, TE> Graph { get; }

    bool IStronglyConnected();

    IList<IReadOnlySet<TV>> StronglyConnectedSets();

    IList<IGraph<TV, TE>> GetStronglyConnectedComponents();

    IGraph<IGraph<TV, TE>, DefaultEdge> GetCondensation();
}